
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面，任何其他内容都*必须*跟随其后！ -->
    <title>说明文档</title>

    <!-- Bootstrap -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet">

    <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询（media queries）功能 -->
    <!-- 警告：通过 file:// 协议（就是直接将 html 页面拖拽到浏览器中）访问页面时 Respond.js 不起作用 -->
    <!--[if lt IE 9]>
      <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
	<div class="container">
		<h1 id="调度台客户端-sdk-开发文档---api">调度台客户端 SDK 开发文档 - API</h1>
<p>[TOC]</p>
<h2 id="一-、常用接口">一 、常用接口</h2>
<h3 id="1-、cc_createinstance-创建sdk实例">1 、cc_CreateInstance 创建SDK实例</h3>
<details>
    用于创建SDK实例。<br>
    CCAPI HINSTANCE __stdcall cc_CreateInstance(bool only_sip);<br>
    参  数：<br>
    only_sip: 是否只启用sdk中的点对点音视频呼叫功能。填写 false 将启动全部功能。<br>
    返回值：<br>
    如果成功返回一个SDK的实例句柄，如果失败返回0。<br>
    说  明：<br>
    这是调用此SDK的第一个接口，返回的句柄将用于其他接口的参数。<br>
</details>



<h3 id="2、-cc_destroyinstance-销毁sdk实例">2、 cc_DestroyInstance 销毁SDK实例</h3>
<details>
    用于销毁SDK实例，与 cc_CreateInstance 接口相对应。<br>
    CCAPI void __stdcall cc_DestroyInstance(HINSTANCE inst);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    返回值：<br>
    无。<br>
    说  明：<br>
    如果是应用程序退出的时候销毁SDK，也可以不调用此接口，直接退出程序；如果要调用此接口需要等待注销接口返回，协议栈停止运行后才能调用此接口。<br>
</details>


<h3 id="3、-cc_startup-启动sdk实例">3、 cc_Startup 启动SDK实例</h3>
<details>
    用于启动SDK实例。<br>
    CCAPI int __stdcall cc_Startup(HINSTANCE inst);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    此接口应该在cc_CreateInstance接口调用成功后调用。<br>
</details>



<h3 id="4、-cc_shutdown-关闭sdk实例">4、 cc_Shutdown 关闭SDK实例</h3>
<details>
    用于停止SDK实例， 与 cc_Startup 接口相对应<br>
    CCAPI int __stdcall cc_Shutdown(HINSTANCE inst);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    此接口应该在注销接口返回后调用。<br>
</details>



<h3 id="5、-cc_login-登录服务器">5、 cc_Login 登录服务器</h3>
<details>
    用于向服务器发送注册请求<br>
    CCAPI int __stdcall cc_Login(HINSTANCE inst, PCC_PROFILE profile);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    profile: 结构指针，内容参见数据结构 CC_PROFILE<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    此接口调用后应该在回调函数中等待 CC_EVENT_LOGIN 事件，来判断是否登录成功。<br>
</details>



<h3 id="6-、cc_logout-从服务器退出登录">6 、cc_Logout 从服务器退出登录</h3>
<details>
    用于向服务器发送注销请求<br>
    CCAPI int __stdcall cc_Logout(HINSTANCE inst);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    此接口调用后应该在回调函数中等待 CC_EVENT_LOGOUT 事件，来判断是否注销成功。<br>
</details>



<h3 id="7-、cc_log_option-启用日志">7 、cc_log_option 启用日志</h3>
<details>
    用于启用或者禁用日志<br>
    CCAPI int __stdcall cc_log_option(HINSTANCE inst,<br>
        const char *log_path, bool enable_core, bool enable_dll, bool enable_app);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    log_path: 日志路径字符串，例如 "D:\\log\\"，这个路径必须是已经存在的路径。<br>
    enable_core: 是否启用SDK内核日志，true表示启用，false表示禁用<br>
    enable_dll: 是否启用SDK业务日志，true表示启用，false表示禁用<br>
    enable_app: 是否启用应用层日志，如果启用，可以调用 cc_push_app_log接口来增加应用层要写入的日志。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    无<br>
</details>



<h3 id="8、-cc_push_app_log-写入应用层日志接口">8、 cc_push_app_log 写入应用层日志接口</h3>
<details>
    用于写入应用层日志<br>
    CCAPI int __stdcall cc_push_app_log(HINSTANCE inst, const char *log);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    log: 日志文本。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    无。<br>
</details>



<h2 id="二-、呼叫相关接口">二 、呼叫相关接口</h2>
<h3 id="1、-cc_getlinecount-获取sdk支持的并发线路总数">1、 cc_GetLineCount 获取SDK支持的并发线路总数</h3>
<details>
    用于获取SDK中支持的线路总数<br>
    CCAPI int __stdcall cc_GetLineCount(HINSTANCE inst);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    返回值：<br>
    返回支持的最大线路数值。<br>
    说  明：<br>
    无。<br>
</details>



<h3 id="2、-cc_getlinestate-获取指定的线路状态">2、 cc_GetLineState 获取指定的线路状态</h3>
<details>
    用于获取某个线路的当前状态<br>
    CCAPI int __stdcall cc_GetLineState(HINSTANCE inst, int line, int *status);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    line: 线路值。<br>
    status: 状态值指针。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    如果函数调用成功，status的值表示状态，参见头文件宏定义 CC_LINE_STATE_NONE ...<br>
</details>



<h3 id="3、-cc_makecall-发起呼叫">3、 cc_MakeCall 发起呼叫</h3>
<details>
    用于发起点对点等呼叫<br>
    CCAPI int __stdcall cc_MakeCall(HINSTANCE inst, int line, const char *remote_number, int media_type,
        HWND hlocal, HWND hremote, bool send_video, const char *call_info = 0, int tag = 0);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    line: 一个空闲线路值。<br>
    remote_number: 被叫号码。<br>
    media_type: 媒体类型。参见 CC_LINE_MEDIA_TYPE_AUDIOVIDEO 等类型。<br>
    hlocal: 用来显示本机视频的窗口句柄。可以为空。<br>
    hremote: 用来显示对端视频的窗口句柄。可以为空。<br>
    send_video: 是否向对方发送本机视频。<br>
    call_info: 呼叫操作携带的消息，由于一些特定的业务。<br>
    tag: 标记值，这个值会在回调的线路状态事件中带回。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    如果函数调用成功，请在回调函数的CC_EVENT_PHONE_LINE_STATE事件中等待处理相关状态。<br>
</details>



<h3 id="4、-cc_answercall-应答">4、 cc_AnswerCall 应答</h3>
<details>
    用于接通对方发起的呼叫<br>
    CCAPI int __stdcall cc_AnswerCall(HINSTANCE inst, int line, int media_type, HWND hlocal, HWND hremote, bool send_video);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    line: 一个空闲线路值。<br>
    media_type: 媒体类型。参见 CC_LINE_MEDIA_TYPE_AUDIOVIDEO 等类型。<br>
    hlocal: 用来显示本机视频的窗口句柄。可以为空。<br>
    hremote: 用来显示对端视频的窗口句柄。可以为空。<br>
    send_video: 是否向对方发送本机视频。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    如果函数调用成功，请在回调函数的CC_EVENT_PHONE_LINE_STATE事件中等待处理相关状态。<br>
</details>



<h3 id="5、-cc_hangupcall-挂断通话线路">5、 cc_HangupCall 挂断通话线路</h3>
<details>
    用于挂断特定线路<br>
    CCAPI int __stdcall cc_HangupCall(HINSTANCE inst, int line);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    line: 线路值。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    请在回调函数的CC_EVENT_PHONE_LINE_STATE事件中等待处理相关状态<br>
</details>



<h3 id="6、-cc_rejectcall-拒绝对方的呼叫">6、 cc_RejectCall 拒绝对方的呼叫</h3>
<details>
    用于拒绝一个呼入线路<br>
    CCAPI int __stdcall cc_RejectCall(HINSTANCE inst, int line);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    line: 线路值。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    请在回调函数的CC_EVENT_PHONE_LINE_STATE事件中等待处理相关状态<br>
</details>



<h3 id="7、-cc_getremotenumber-获取对方号码">7、 cc_GetRemoteNumber 获取对方号码</h3>
<details>
    获取特定线路值的对端号码<br>
    CCAPI int __stdcall cc_GetRemoteNumber(HINSTANCE inst, int line, char* remote_num, int num_len);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    line: 线路值。<br>
    remote_num: 一个已经分配内存的缓冲区指针。<br>
    num_len: 上一次参数的长度。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    调用成功后，remote_num中存放的是对方的号码，只有在线路是有状态的情况下调用有效。<br>
</details>



<h3 id="8、-cc_mute-静音">8、 cc_Mute 静音</h3>
<details>
    对某个线路静音<br>
    CCAPI int __stdcall cc_Mute(HINSTANCE inst, int line);    <br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    line: 线路值。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    调用成功后，SDK不会播放某个某个线路收到的声音。<br>
</details>



<h3 id="9-、cc_unmute-取消静音">9 、cc_Unmute 取消静音</h3>
<details>
    恢复某个线路的声音<br>
    CCAPI int __stdcall cc_Unmute(HINSTANCE inst, int line, int volume);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    line: 线路值。<br>
    volume: 音量值(目前不支持，可以传0)。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    无。<br>
</details>



<h3 id="10、-cc_ismute-是否是静音状态">10、 cc_IsMute 是否是静音状态</h3>
<details>
    判断某个线路是否是经营状态<br>
    CCAPI bool __stdcall cc_IsMute(HINSTANCE inst, int line);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    line: 线路值。<br>
    返回值：<br>
    返回true表示静音，否则非静音。<br>
    说  明：<br>
    无。<br>
</details>



<h3 id="11、-cc_setvolume-设置音量">11、 cc_SetVolume 设置音量</h3>
<details>
    设置线路的音量值<br>
    CCAPI int __stdcall cc_SetVolume(HINSTANCE inst, int line, int volume);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    line: 线路值。<br>
    volume: 音量值，范围 40 - 100。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    无。<br>
</details>



<h3 id="12、-cc_setfullscreen-设置全屏模式">12、 cc_SetFullScreen 设置全屏模式</h3>
<details>
    设置某个线路的视频窗口为全屏模式<br>
    CCAPI int __stdcall cc_SetFullScreen(HINSTANCE inst, int line);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    line: 线路值。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    全屏后，双击或者ESC可恢复非全屏模式。<br>
</details>



<h3 id="13、-cc_getvideoratio-获取视频拉伸类型">13、 cc_GetVideoRatio 获取视频拉伸类型</h3>
<details>
    获取某路视频的拉伸类型<br>
    CCAPI int __stdcall cc_GetVideoRatio(HINSTANCE inst, int line);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    line: 线路值。<br>
    返回值：<br>
    返回当前视频的拉伸类型。<br>
    说  明：<br>
    返回值参见宏定义 VIDEO_REATIO_ADAPT ... 。<br>
</details>



<h3 id="14、-cc_setvideoratio-设置视频拉伸类型">14、 cc_SetVideoRatio 设置视频拉伸类型</h3>
<details>
    设置某路视频的拉伸类型<br>
    CCAPI int __stdcall cc_SetVideoRatio(HINSTANCE inst, int line, int state);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    line: 线路值。<br>
    state: 拉伸类型，参见宏定义 VIDEO_REATIO_ADAPT ...<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    无。<br>
</details>



<h2 id="三-、辅助接口">三 、辅助接口</h2>
<h3 id="1、-cc_setmicrophone-设置麦克风">1、 cc_SetMicrophone 设置麦克风</h3>
<details>
    设置SDK使用的麦克风设备<br>
    CCAPI int __stdcall cc_SetMicrophone(HINSTANCE inst, GUID guid);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    guid: 设备guid。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    无<br>
</details>



<h3 id="2、-cc_setspeaker-设置扬声器">2、 cc_SetSpeaker 设置扬声器</h3>
<details>
    设置SDK使用的扬声器设备<br>
    CCAPI int __stdcall cc_SetSpeaker(HINSTANCE inst, GUID guid);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    guid: 设备guid。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    无<br>
</details>



<h3 id="3-、cc_setcamera-设置视频输入设备">3 、cc_SetCamera 设置视频输入设备</h3>
<details>
    设置SDK使用的摄像头设备<br>
    CCAPI int __stdcall cc_SetCamera(HINSTANCE inst, const char *camera);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    camera: 摄像头名称字符串。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    无<br>
</details>



<h3 id="4-、cc_setmediaport-设置媒体端口范围">4 、cc_SetMediaPort 设置媒体端口范围</h3>
<details>
    设置媒体端口范围<br>
    CCAPI int __stdcall cc_SetMediaPort(HINSTANCE inst, int port_begin, int port_end);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    port_begin: 端口起始值。<br>
    port_end：端口结束值。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    无<br>
</details>



<h3 id="5、--cc_getmediaport-获取媒体端口范围">5、  cc_GetMediaPort 获取媒体端口范围</h3>
<details>
    获取媒体端口范围<br>
    CCAPI int __stdcall cc_GetMediaPort(HINSTANCE inst, int *port_begin, int *port_end);<br>
    参  数：<br>
    inst: SDK实例句柄。<br>
    port_begin: 接收端口起始值。<br>
    port_end：接收端口结束值。<br>
    返回值：<br>
    成功返回0，否则返回非0，参见头文件错误码。<br>
    说  明：<br>
    无<br>
</details>
		
	</div>
	<br><br>
    <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery，所以必须放在前边) -->
    <script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
    <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
  </body>
</html>
